package com.zlj.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

@WebFilter(filterName="FilterDemo",urlPatterns="/ServletDemo")
public class FilterDemo implements Filter{

	/**
	 * 服务器关闭时销毁，销毁前执行destroy方法，用来是释放非内存资源
	 */
	@Override
	public void destroy() {
		System.out.println("Filter  要销毁了");
		
	}

	/**
	 * 每次过滤时都会执行doFilter方法
	 * 
	 * FilterChain，有一个doFilter()方法,里面有两个参数，request和response 
	 */
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		System.out.println("Filter要进行拦截了");
		chain.doFilter(request, response); //放行，即可以去执行FilterServlet的doGet()方法
		System.out.println("放行执行完servlet的方法之后又回来了");
	}

	/**
	 * Filter是在服务器启动时创建的，Filter一创建，就立即执行init()方法进行初始化
	 * 
	 * 参数FilterConfig：可以获取初始化参数; 
	 *                 可以获取filter的名称; 
	 *                 可以获取filter上下文[servletContext]
	 */
	@Override
	public void init(FilterConfig config) throws ServletException {
		System.out.println("Filter创建了");
		
	}
}
